#!/bin/sh

# 作用：根据IP更改ubuntu主机名
# 作者：comet
# 时间：2013-08-23
# 原理：客户机自动获取IP，启动后执行本脚本，根据IP最后一段来更改主机名。

preHostname="op"

#获取主机名
localHost="`hostname`"

#获取IP
#获取 global 的行，获取/分隔的第一个参数，再获取空格分隔的最后一个参数
localIP=`ip a|grep global |awk -F"/" '{print $1}'|awk '{print $NF}'`
#获取 ip 最后一位
lastIP=`echo ${localIP} | awk -F"." '{print $NF}'`
#设置主机名
hostName=${preHostname}${lastIP}
#判断当前主机名是否正确，正确则不执行下面代码
if [ ${localHost} != ${preHostname}${lastIP} ] 
then 
    echo "changing hostname and ip ..."

	#获取网卡名
	localIFACE=`ip a|grep global |awk '{print $NF}'`

	#获取网卡MAC，当只有一个eth网卡时才正常
	localMAC=`ifconfig |awk '/eth/{print $5}'`

	#设置主机名
	echo ${hostName} > /etc/hostname
	#设置主机名对应的解释
	nowName=`cat /etc/hosts |grep 127.0.1.1 |awk '{print $2}'`
	sed -i s/${nowName}/${hostName}/ /etc/hosts

	#设置salt minion 的服务器和id，先删除原始的，避免重复
	sed -i /^master:/d /etc/salt/minion
    sed -i /^id:/d /etc/salt/minion
	echo "master: dp-srv-1.sharekernel.com" >> /etc/salt/minion
	echo "id: ${hostName}" >> /etc/salt/minion
	
	#删除/etc/udev/rules.d/70-persistent-net.rules，使得重启网卡名有eth0
	rm /etc/udev/rules.d/70-persistent-net.rules

	#重启
	reboot
fi

